import pymysql

db = pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='spiders')
cursor = db.cursor()

sql = 'SELECT * FROM students WHERE age >=  20'

try:
    cursor.execute(sql)
    # 获取查询结果的条数
    print('Count',cursor.rowcount)
    # 获取结果的第一条数据，返回结果-元组形式，元组的元素顺序跟字段一一对应
    one = cursor.fetchone()
    # 可以得到结果的所有数据，二重元组，每个元素都是一条记录
    print('One',one)
    results = cursor.fetchall()
    print('Results',results)
    print('Results Type:', type(results))
    for row in results:
        print(row)
except Exception as e:
    print(e)

db.close()

'''
注意1：这里不需要db的commit()方法
注意2：这里显示是2条而不是4条数据，原因——
    它的内部实现有一个偏移指针用来指向查询结果，最开始 偏移指针指向第一条数据，取一次之后，指针偏移到下一条数据，这样再取的话，就会取到下一条数据了
    最初调用了fetchone()方法，这样结果的偏移指针就指向下一条数据，fetchall()方法返回的是偏移指针指向的数据一直到结束的所有数据
    故该方法获取的结果就只剩3个了
'''